# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# 建立者:        Young  
# Name:         demo10.09
# Description:
# Author:       $赵怡蕾
# Date:         2019/3/7
#-------------------------------------------------------------------------------

class MyClass:
    # 定义一个静态变量，可以被静态方法和类方法访问
    name = "Bill"
    def __init__(self):
        print("MyClass的构造方法被调用")
        # 定义实例变量，静态方法和类方法不能访问该变量
        self.value = 20
    # 定义静态方法
    @staticmethod
    def run():
        # 访问MyClass类中的静态变量name
        print('*',MyClass.name,'*')
        print("MyClass的静态方法run被调用")
    # 定义类方法
    @classmethod
    # 这里self是类的元数据，不是类的实例
    def do(self):
        print(self)
        # 访问MyClass类中的静态变量name
        print('[',self.name,']')
        print('调用静态方法run')
        self.run()
        # 在类方法中不能访问实例变量，否则会抛出异常（因为实例变量需要用类的实例访问）
        # print(self.value)
        print("成员方法do被调用")
    # 定义实例方法
    def do1(self):
        print(self.value)
        print('<',self.name,'>')
        print(self)
# 调用静态方法run
MyClass.run()
# 创建MyClass类的实例
c = MyClass()
# 通过类的实例也可以调用类方法
c.do()
# 通过类访问类的静态变量
print('MyClass2.name','=',MyClass.name)
# 通过类调用类方法
MyClass.do()
# 通过类的实例访问实例方法
c.do1()